[Konashi] 廃品リレーでリズムマシンを作ってみた
1 はじめに
リレーの音って、以前は色んな所で聞かれた気がするのですが、最近は、色々と半導体に移行したせいか、あまり聞かなくなったように感じます。 しかし、リレーの音って、なんか良いですよね・・・(すいません、まったくの個人的尺度です)
今回は、廃品から外した幾つかのリレーで、リズムマシンを作ってみました。
ちなみに、同じ型番のリレーでも、電圧を変えると違った音色になるのです。
2 デバイス
出力デバイスは、何処で外してきたか全然思い出せませんが、私の廃品収取箱にあったリレーです。
基盤に載るだけ並べて、適当に制限抵抗と動作確認用にLEDを乗せながら12Vで動作するようにしました。
実は設計図(回路図)はありません。ほんと適当です。
表面は、全部リレーで、チップの抵抗やLEDは裏面です。 チップ部品は、ちょうど基盤のランドの間に入るので非常に簡単です。
3 konashi
リズムマシンの操作は、iPhoneで行っていますが、iPhoneとデバイスは、Konashiを利用してBluetoothで繋がっています。
もともとiPhoneには、センサーや表示など、なんでも揃っていますが、残念ながらIOを制御する入出力は持っていません。そして、これを追加できるのがKonashiです。
Konashiは、デジタルIOの他にアナログ入力、UART、I2C、PWM出力を備えていますが、今回使用したのは、単純にデジタルの出力だけです。
http://konashi.ux-xu.com/
4 iOS実装
(1) CocoaPods
Konashiには、iOSから簡単に利用できるようにSDKが配布されています。
SDKは、CocoaPodsで簡単に組み込むことが可能で、CoreBluetooth、Foundation及び、JavaScriptCoreも、同時に組み込まれます。
pod 'konashi-ios-sdk'
(2) 初期化
最初に記述しているのは、Konashiの初期化が完了した際のハンドラ処理です。 全部のデジタルIOピンを出力モードに設定しています。
[[Konashi shared] setReadyHandler:^{ [Konashi pinModeAll:KonashiPinModeOutput]; }];
(3) 接続
次のコードで、Bluetoothで接続可能なデバイスを検索します。
[Konashi find];
近くのBluetooth機器が検索できたら、選択する画面が表示され、これを選択すると接続が開始されます。
アプリでは、接続が完了した時点で、操作可能にしています。
[[Konashi shared] setConnectedHandler:^{ self.mainSwitch.enabled = true; }];
(4) リレーの駆動
タイマーで一定時間毎に実行される下記のメソッドで、当該デジタルIOの電圧を一定時間(0.03秒)Hightレベルに上げることで、リレーを稼働させています。
0.03秒より短いと、電流不足でリレーが駆動しきれず、また長いと、シャキシャキ感が無くなるので微妙なところです。
- (void)blink { for(int x=0; x<5; x++){ [self.buttons[self.counter][x] blink]; if ([self.buttons[self.counter][x] isActive]) { [Konashi digitalWrite:KonashiDigitalIO3 + x value:KonashiLevelHigh]; usleep(30000); [Konashi digitalWrite:KonashiDigitalIO3 + x value:KonashiLevelLow]; } } }
(5) UI
特にひねりは有りません。Rのボタンを押すと、そのタイミングでリレーを鳴らすかどうかを設定できます。
5 最後に
実はこれ、だいぶ前から作りかけていたのですが、なかなか時間が取れずに放置されてました。今日、やっと完成して嬉しいです。
今、まったりとリレーの音を堪能しています。
たぶん、誰も必要ないと思いますが、コードです。
[GitHub] https://github.com/furuya02/RelayRhythmMarine